aws, fastapi,

AWS 部署fastapi教學

Champion Champion Follow · 1 min read
AWS 部署fastapi教學
Share this

這次想來教大家如何使用AWS去部署fastapi,這篇也會教大家怎麼從API Gateway這邊連線到AWS RDS~~~

在開始教怎麼部署一個API的時候,先來跟大家講一下API GATEWAY是什麼,可以看到下圖,API GATEWAY就像一個橋樑連結前端和後端,前端像是網頁,後端像是我們在AWS建的EC2、RDS,API Gateway 負責處理有關接受和處理多達數十萬個並行 API 呼叫的所有任務,這些任務包括流量管理、授權和存取控制、監控和 API 版本管理。也就是說AWS已經幫我處理好很多流量管理、權限等等的問題,我們只要專心把API寫好部署即可,不用管一些平常在公司要請Data Engineer做的一些設定,輕鬆部署~~ image

一樣首先先去搜尋AWS的API GATEWAY的服務,並且點選它 image

然後選REST API,這樣我們才能使用http和AWS的服務 image

接著選新API,然後API的名稱就自己隨意取 image

Lambda 首先進到AWS Lambda服務後,選取函式->建立函式 image

然後輸入我們函式的名稱以及選取我們在執行函式需要的環境後,就可以按建立函式,建立我們的第一個lambda 函式囉~~~ image

然後我們就會到程式的編輯頁面,可以開始建立我們fastapi的程式~~ image

我們先把原本lambda_function.py 這個檔案改成 main.py 這樣比較符合fastapi的檔案命名(不改也可以),然後再寫一個最簡單的fastapi回傳hello word,值得注意的是可以看到程式碼第11行需要用Mangum 去把我們的fastapi包起來,這是為什麼呢?因為Mangum可以將任何ASGI的應用(fastapi)轉成lambda handler讓Lambda函數執行,簡單來說就是可以讓我們的fastapi服務可以在AWS lambda服務上運行。 image

再來我們要來設定執行的時候lambda要執行的func,這部分也是很多教學沒提到的部分,如果沒設定就會跑不起來,我們要去改下圖紅框框的地方把原本的lambda_function.lambda_handler改成 main.handler 這樣lambda函數才知道啟動的時候要執行什麼。 image image

你以為這樣就結束了嗎,並沒有xd,你會發現我們都沒有裝套件要怎麼執行fastapi和Mangum呢?所以接下來我們要來裝套件,這裏會透過Layer這個功能來裝套件,好處是可以讓不同的lambda函式共用這個layer,要在這個layer裝套件,我們必須先在本地準備好套件的壓縮檔,所以先來教大家怎麼準備這個壓縮檔~~

首先先創一個叫python的資料夾(一定要叫python不然會吃不到),然侯同時準備好requirements.txt裡面寫好要裝的套件版本

image

目錄結構如下: image

接著回到一開始的地方,輸入壓縮python資料夾的指令,壓縮成dependency.zip,這樣我們就可以準備上傳囉~~

接著回到AWS選layer->建立Layerimage

一樣輸入這個layer的名稱以後,我們上傳我們剛剛用好的壓縮檔後就可以建立Layer囉~~ image

再來回到lambda 函式的頁面,設定layer,點選新增layer image

選取自訂layer,選剛剛我們創立好的layer,版本因為只有一版,所以是1。 image

套件和api程式碼都準備好我們就可以開始部署,點選deploy,這樣就部署完成囉~~ image

來測試一下看看有沒有順利運行~~點選Test image

然後在範本的地方選apigateway-aws-proxy,然後把紅色框框的地方都改成下圖這樣,這樣才可以打得到我們的api image 可以看到成功回傳Hello World,這樣就完成fastapi部署在lambda上面囉 image

參考資料:

  1. https://adem.sh/blog/tutorial-fastapi-aws-lambda-serverless
  2. https://jumping-code.com/2021/07/28/aws-lambda-python-packages/
  3. https://jumping-code.com/2021/08/12/fastapi-deploy-aws-api-gateway/
Join Newsletter
Get the latest news right in your inbox. We never spam!
Champion
Written by Champion Follow
Hi, I am Champion, the author of CHAMPION.AI, I will share some AI and investment articles. I hope you like it.